80075030			;

J	80402000
LUI	K0,	$8010		;
NOP

;K0, K1, and AT are available
80402000			;
;Preserve
SD	AT,	$57B0	(K0)	;
;Copy to/from specified backup SRAM
LUI	K0,	$800A		;
LB	K1,	$5060	(K0)	;

BNEZ	K1,	From
;CopyTo if L pressed
LUI	K0,	$8010		;
LH	K1,	$5304	(K0)	;
XORI	K1,	K1,	$0020	;

BNEZ	K1,	NoCopy
;CopyTo
LUI	K0,	$801E		;
ADDIU	K0,	K0,	$6010	;
LUI	K1,	$8040		;
ADDIU	K1,	K1,	$4000	;
SW	R0,	$FFF8	(K1)	;
SW	R0,	$FFFC	(K1)	;
;-------------------------------;ToLoop
ToLoop:
LW	AT,	$0000	(K0)	;
SW	AT,	$0000	(K1)	;
ADDIU	K0,	K0,	$0004	;
ADDIU	K1,	K1,	$0004	;
LUI	AT,	$801E		;
ADDIU	AT,	AT,	$6580	;

BEQ	K0,	AT,	NoCopy
NOP
LUI	AT,	$8040		;
ADDIU	AT,	AT,	$4570	;

BEQ	K0,	AT,	NoCopy
NOP

J	ToLoop
NOP
;-------------------------------;From
From:
LUI	K0,	$8040		;
LW	K1,	$3FFC	(K0)	;

BNEZ	K1,	NoCopy
ADDIU	K0,	K0,	$4000	;
LUI	K1,	$801E		;
ADDIU	K1,	K1,	$6010	;
SW	K1,	$FFFC	(K0)	;

J	ToLoop
NOP
;-------------------------------;NoCopy
NoCopy:
;Co Op SRAM fix if in multi mode
LUI	K0,	$800A		;
LB	K1,	$5060	(K0)	;

BEQZ	K1,	End
;Copy to multi or from multi
LUI	K0,	$8040		;
LW	K1,	$3FF8	(K0)	;

BNEZ	K1,	Saverize
;Uberize if L is pressed
LUI	K0,	$8010		;
LH	K1,	$5304	(K0)	;
XORI	K1,	K1,	$0020	;

BNEZ	K1,	End
;Uberize
;Copy to multi
LUI	K1,	$8040		;
SW	K1,	$3FF8	(K1)	;
LUI	K1,	$8010		;
ADDIU	K1,	K1,	$ED66	;
LUI	K0,	$8040		;
ADDIU	K0,	K0,	$415C	;
;-------------------------------;One
One:
LH	AT,	$0000	(K0)	;
SH	AT,	$0000	(K1)	;
ADDIU	K0,	K0,	$0002	;
ADDIU	K1,	K1,	$0002	;
LUI	AT,	$8040		;
ADDIU	AT,	AT,	$41D2	;

BEQL	K0,	AT,	One
ADDIU	K1,	K1,	$002A	;
LUI	AT,	$8040		;
ADDIU	AT,	AT,	$4248	;

BEQL	K0,	AT,	One
ADDIU	K1,	K1,	$002A	;
LUI	AT,	$8040		;
ADDIU	AT,	AT,	$42BE	;

BNE	K0,	AT,	Two
NOP
ADDIU	K1,	K1,	$002A	;
ADDIU	K0,	K0,	$FE28	;

J	One
NOP
;-------------------------------;Two
Two:
LUI	AT,	$8040		;
ADDIU	AT,	AT,	$415C	;

BNE	K0,	AT,	One
NOP

J	End
NOP
;-------------------------------;Saverize
Saverize:
;Copy from multi
LUI	K1,	$8010		;
ADDIU	K1,	K1,	$ED66	;
LUI	K0,	$801E		;
ADDIU	K0,	K0,	$616C	;
;-------------------------------;Bob

Bob:
LH	AT,	$0000	(K1)	;
SH	AT,	$0000	(K0)	;
ADDIU	K0,	K0,	$0002	;
ADDIU	K1,	K1,	$0002	;
LUI	AT,	$801E		;
ADDIU	AT,	AT,	$61E2	;

BEQL	K0,	AT,	Bob
ADDIU	K1,	K1,	$002A	;
LUI	AT,	$801E		;
ADDIU	AT,	AT,	$6258	;

BEQL	K0,	AT,	Bob
ADDIU	K1,	K1,	$002A	;
LUI	AT,	$801E		;
ADDIU	AT,	AT,	$62CE	;

BNE	K0,	AT,	Bill
NOP
ADDIU	K1,	K1,	$002A	;
ADDIU	K0,	K0,	$FE28	;

J	Bob
NOP
;-------------------------------;Bill
Bill:
LUI	AT,	$801E		;
ADDIU	AT,	AT,	$616C	;

BNE	K0,	AT,	Bob
NOP
;-------------------------------;End
End:
LUI	K0,	$8010		;

J	80075038
ADDIU	K0,	K0,	$5790	;
